#!/usr/bin/env python
#-*-coding:utf-8-*-

################################################################################
# DOCS
################################################################################

"""passwdsocks shows or sets the socks password and changes it in some files"""

################################################################################
# IMPORTS
################################################################################

import optparse
import os


################################################################################
# META
#     Meta informacion sobre el proyecto
################################################################################

__prj__ = "passwdsocks"
__version__ = "1.0"
__author__ = "Flor"
__since__ = "0.1"
__date__ = "2010"
__license__ = "gpl3"
__copyright__ = """%s %s Copyright (C) %s %s
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; for details see LICENSE.txt.""" % (__prj__,
                                                            __version__,
                                                            __date__,
                                                             __author__)
                                                             
################################################################################
# CONSTANTS
################################################################################

_OPT_PARSER = optparse.OptionParser("usage: %s [option] [arg]\n\n%s\n\n%s"
                                    % (__prj__, __doc__, __copyright__),
                                    version=__version__)
_OPT_PARSER.add_option("-p", "--password", action="store", type="string",
                       dest="password",
                       help="set the socks password",
                       metavar="PASSWORD")
                       
_PASSWORD_PATH = "/home/flor/MyDocuments/passocks"
_CONFIG_PATH = "/home/flor/bin/socks/bin/socks.properties"
_SEPARATOR = ':'

################################################################################
# FUNCTIONS
################################################################################

def main():
    
    options, args = _OPT_PARSER.parse_args()
    if options.password:
        _PASSWORD_FILE = open(_PASSWORD_PATH, 'w')
        _PASSWORD_FILE.write(options.password.encode("base64"))
        _PASSWORD_FILE.close
        _CONFIG_FILE = open(_CONFIG_PATH, 'r')
        socksprop = _CONFIG_FILE.read().splitlines()
        _CONFIG_FILE.close()
        line = socksprop[5]
        # line = 'proxy = 9.159.219.11:1080:ar0v8a6d:wH=-oZ2S'
        tupla = line.split(_SEPARATOR, 4)
        tupla[3] = options.password
        line = _SEPARATOR.join(tupla)
        socksprop[5] = line
        socksprop.append('')
        _CONFIG_FILE = open(_CONFIG_PATH, 'w')
        _CONFIG_FILE.write('\n'.join(socksprop))
        _CONFIG_FILE.close()
        msg = "================= Password updated ================\n" \
              "= Remember to change it in SAMETIME WITH NOVARTIS =\n" \
              "==================================================="
        
    else:
        if os.path.isfile(_PASSWORD_PATH):
            _PASSWORD_FILE = open(_PASSWORD_PATH, 'r')
            msg = _PASSWORD_FILE.read().decode("base64")
            _PASSWORD_FILE.close
        else:
            msg = "File does not exist"
    print msg
    
        
################################################################################
# MAIN
################################################################################


if __name__ == "__main__":
    main()
    
    
    
